﻿using CheccCoverplateCulvertAssemble.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Checc_CircularCulvert_Assemble.commons.overall
{
    /// <summary>
    /// 出口急流槽基类
    /// </summary>
    public class CommonChuteOutBase : MyNotifyPropertyChanged
    {
        private CommonChuteOut _leftCommonChuteOut = new CommonChuteOut();
        private CommonChuteOut _rightCommonChuteOut = new CommonChuteOut();

        /// <summary>
        /// 右侧出口急流槽
        /// </summary>
        public CommonChuteOut RightCommonChuteOut
        {
            get { return _rightCommonChuteOut; }
            set
            {
                if (value == _rightCommonChuteOut)
                    return;
                NotifyPropertyChanged(() => RightCommonChuteOut);
                _rightCommonChuteOut = value;
            }
        }

        /// <summary>
        /// 左侧出口急流槽
        /// </summary>
        public CommonChuteOut LeftCommonChuteOut
        {
            get { return _leftCommonChuteOut; }
            set
            {
                if (value == _leftCommonChuteOut)
                    return;
                NotifyPropertyChanged(() => LeftCommonChuteOut);
                _leftCommonChuteOut = value;
            }
        }
    }
    /// <summary>
    /// 出口急流槽
    /// </summary>
    public class CommonChuteOut : MyNotifyPropertyChanged
    {
        private double _height;

        /// <summary>
        /// 槽体高度
        /// </summary>
        public double Height
        {
            get { return _height; }
            set
            {
                if (value == _height)
                    return;
                NotifyPropertyChanged(() => Height);
                _height = value;
            }
        }

        private double _endlongSlopeRatio;

        /// <summary>
        /// 槽体纵坡比
        /// </summary>
        public double EndlongSlopeRatio
        {
            get { return _endlongSlopeRatio; }
            set
            {
                if (value == _endlongSlopeRatio)
                    return;
                NotifyPropertyChanged(() => EndlongSlopeRatio);
                _endlongSlopeRatio = value;
            }
        }

        private double _deep;

        /// <summary>
        /// 槽深
        /// </summary>
        public double Deep
        {
            get { return _deep; }
            set
            {
                if (value == _deep)
                    return;
                NotifyPropertyChanged(() => Deep);
                _deep = value;
            }
        }

        private double _deflectionAngle;

        /// <summary>
        /// 偏转角
        /// </summary>
        public double DeflectionAngle
        {
            get { return _deflectionAngle; }
            set
            {
                if (value == _deflectionAngle)
                    return;
                NotifyPropertyChanged(() => DeflectionAngle);
                _deflectionAngle = value;
            }
        }


        private double _bottomPaveThickness;

        /// <summary>
        /// 槽底铺砌厚度
        /// </summary>
        public double BottomPaveThickness
        {
            get { return _bottomPaveThickness; }
            set
            {
                if (value == _bottomPaveThickness)
                    return;
                NotifyPropertyChanged(() => BottomPaveThickness);
                _bottomPaveThickness = value;
            }
        }

        private double _wallThickness;

        /// <summary>
        /// 槽壁厚度
        /// </summary>
        public double WallThickness
        {
            get { return _wallThickness; }
            set
            {
                if (value == _wallThickness)
                    return;
                NotifyPropertyChanged(() => WallThickness);
                _wallThickness = value;
            }
        }

        private double _wingWallLength;

        /// <summary>
        /// 翼墙长度
        /// </summary>
        public double WingWallLength
        {
            get { return _wingWallLength; }
            set
            {
                if (value == _wingWallLength)
                    return;
                NotifyPropertyChanged(() => WingWallLength);
                _wingWallLength = value;
            }
        }

        private double _wingWallAngleFlare;

        /// <summary>
        /// 翼墙扩散角
        /// </summary>
        public double WingWallAngleFlare
        {
            get { return _wingWallAngleFlare; }
            set
            {
                if (value == _wingWallAngleFlare)
                    return;
                NotifyPropertyChanged(() => WingWallAngleFlare);
                _wingWallAngleFlare = value;
            }
        }

        private double _cutoffWallHeight;

        /// <summary>
        /// 截水墙高度
        /// </summary>
        public double CutoffWallHeight
        {
            get { return _cutoffWallHeight; }
            set
            {
                if (value == _cutoffWallHeight)
                    return;
                NotifyPropertyChanged(() => CutoffWallHeight);
                _cutoffWallHeight = value;
            }
        }

        private double _cutoffWallWidth;

        /// <summary>
        /// 截水墙宽度
        /// </summary>
        public double CutoffWallWidth
        {
            get { return _cutoffWallWidth; }
            set
            {
                if (value == _cutoffWallWidth)
                    return;
                NotifyPropertyChanged(() => CutoffWallWidth);
                _cutoffWallWidth = value;
            }
        }


        private double _earWallInterval;

        /// <summary>
        /// 耳墙间距
        /// </summary>
        public double EarWallInterval
        {
            get { return _earWallInterval; }
            set
            {
                if (value == _earWallInterval)
                    return;
                NotifyPropertyChanged(() => EarWallInterval);
                _earWallInterval = value;
            }
        }

        private double _earWallHeight;

        /// <summary>
        /// 耳墙高度
        /// </summary>
        public double EarWallHeight
        {
            get { return _earWallHeight; }
            set
            {
                if (value == _earWallHeight)
                    return;
                NotifyPropertyChanged(() => EarWallHeight);
                _earWallHeight = value;
            }
        }

        private double _earWallWidth;

        /// <summary>
        /// 耳墙宽度
        /// </summary>
        public double EarWallWidth
        {
            get { return _earWallWidth; }
            set
            {
                if (value == _earWallWidth)
                    return;
                NotifyPropertyChanged(() => EarWallWidth);
                _earWallWidth = value;
            }
        }

        private double _sideWidth;

        /// <summary>
        /// 洞口侧加宽
        /// </summary>
        public double SideWidth
        {
            get { return _sideWidth; }
            set
            {
                if (value == _sideWidth)
                    return;
                NotifyPropertyChanged(() => SideWidth);
                _sideWidth = value;
            }
        }

    }
}
